#include "MDataMap.h"
#include "VGate.h"

#ifndef CEDITOR_H
#define CEDITOR_H

#include <QMouseEvent>
#include <QVBoxLayout>
#include <QPixmap>
#include <QLabel>
#include <QList>

#include <fstream>
#include <iostream>

// Coordonnées d'un évènement souris
struct CEditorPosition
{
    int x;
    int y;
};

// Classe de traitement des évènements
class CEditor
{
private:
    static int not_finished; // Etat des évènements en cours
    QLabel *table[80 * 60]; // Tableau des objets affiché à l'écran
    MMap *working_map; // Carte
    int selected_type; // Type d'objet à créer
    QList<VGate *> opened_gates; // Liste des boîtes de dialogue ouvertes
    QList<CEditorPosition *> editor_positions; // Liste des positions des objets en train d'être éditées

public:
    CEditor();
    ~CEditor();
    void close_all_gates(); // Ferme toutes les boîtes de dialogue
    void new_map(); // Crée une nouvelle carte
    void delete_map(); // Détruit une carte
    void load_map(QString path); // Charge une carte depuis un fichier
    void save_map(QString path); // Sauvegarde une carte
    int position_event(QMouseEvent *event); // Vérifie que la position n'est pas déjà en train d'être éditée
    void handle_mouse_release(QLabel *label, QMouseEvent *event); // Gère la création/destruction d'objets

    friend class VEditor;
};

#endif
